1. Field of the Invention
The present invention pertains to the field of integrated circuit devices. More particularly, this invention relates to cache memory circuits.
2. Background
A cache memory is a random access memory that buffers data from a main memory. A cache memory is typically employed to provide high bandwidth memory accessing to a processor. Typically, such a cache memory reflects selected locations of the main memory. A typical prior cache memory contains a memory array that is usually organized into a set of cache blocks. The cache blocks are typically referred to as cache lines. A cache memory is usually smaller than the corresponding main memory. As a consequence, each cache line stored in the cache memory includes a corresponding address tag that identifies the main memory location for that cache line.
Prior cache memories typically implement a pipelined write architecture. In such a cache memory, a write operation requires two clock cycles. During a first cycle of the write operation, the processor transfers an address and a data value for the write operation to the cache memory. The cache memory typically latches the address and the data value into a set of pipeline registers. During a second cycle of the write operation, the cache memory transfers the data value and associated address tags into the memory array.
A prior pipelined write architecture for a cache memory typically provides high input bandwidth during write operations. Such an architecture enables the processor to supply a new write data value to the cache memory during each clock cycle while the cache memory transfers the previous write data value into the memory array.
Unfortunately, a pipelined write architecture typically causes a wait state in the cache memory for a read operation that immediately follows a write operation. Such a wait state usually occurs while the cache memory transfers the write data value of the preceding write operation into the memory array. A wait cycle is typically required because the read operation may be targeted for the same cache line as the preceding write operation that is buffered in the write pipeline registers. The cache memory must transfer the buffered write operation to the memory array before the subsequent read operation can be processed. Unfortunately, such wait cycles decrease the overall throughput to such a prior cache memory.
Other prior cache memories implement single cycle non-pipelined write operations. In this type of cache memory, the processor supplies the write data value to the cache memory early in the write cycle in order to enable the cache memory to transfer the write data value to the memory array during the same cycle. Unfortunately, single cycle cache memories stress the write timing of the processor. As a consequence, such prior single cycle cache memories are typically limited to lower input bandwidths than cache memories having a pipelined write architecture.